// 个人中心API - 使用统一的HTTP客户端
// 自动环境切换：开发环境使用 localhost:5000，生产环境使用 zzaisx.top
import http from './http'

// GUID格式验证函数
const isValidGuid = (guid) => {
  const guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i
  return typeof guid === 'string' && guidRegex.test(guid)
}

// 将字符串转换为GUID格式
const formatAsGuid = (id) => {
  if (!id) return null
  
  // 如果已经是GUID格式，直接返回
  if (isValidGuid(id)) return id
  
  // 如果是纯数字或其他格式，尝试转换为开发环境的GUID
  if (typeof id === 'string' && id.length > 0) {
    // 对于开发环境，生成一个固定GUID
    const paddedId = id.padEnd(32, '0').substring(0, 32)
    return `${paddedId.substring(0, 8)}-${paddedId.substring(8, 12)}-${paddedId.substring(12, 16)}-${paddedId.substring(16, 20)}-${paddedId.substring(20, 32)}`
  }
  
  return null
}

export const getProfile = (id) => {
  console.log('📡 getProfile调用，原始ID:', id, '类型:', typeof id)
  
  if (!id || id === 'undefined' || id === 'null') {
    const errorMsg = `用户ID无效: ${id}`
    console.error('❌ getProfile错误:', errorMsg)
    return Promise.reject(new Error(errorMsg))
  }
  
  // 转换为GUID格式
  const guidId = formatAsGuid(id)
  if (!guidId) {
    const errorMsg = `无法将ID转换为有效的GUID格式: ${id}`
    console.error('❌ getProfile错误:', errorMsg)
    return Promise.reject(new Error(errorMsg))
  }
  
  const url = `/Personal/${guidId}/profile`
  console.log('📡 请求URL:', url, 'GUID ID:', guidId)
  
  return http.get(url)
    .then(response => {
      console.log('✅ getProfile成功响应:', response)
      return response
    })
    .catch(error => {
      console.error('❌ getProfile失败:', {
        url,
        originalId: id,
        guidId: guidId,
        error: error.message,
        status: error.response?.status,
        statusText: error.response?.statusText,
        responseData: error.response?.data
      })
      
      // 提供更友好的错误信息
      if (error.response?.status === 404) {
        throw new Error(`用户(ID: ${id})的个人信息不存在`)
      } else if (error.response?.status === 401) {
        throw new Error('身份验证失败，请重新登录')
      } else {
        throw error
      }
    })
}
    
export const updateProfile = (id, dto) => {
  console.log('💾 updateProfile调用，原始ID:', id, '数据:', dto)
  
  if (!id || id === 'undefined' || id === 'null') {
    const errorMsg = `用户ID无效: ${id}`
    console.error('❌ updateProfile错误:', errorMsg)
    return Promise.reject(new Error(errorMsg))
  }
  
  if (!dto) {
    console.error('❌ updateProfile: 更新数据为空')
    return Promise.reject(new Error('更新数据不能为空'))
  }
  
  // 转换为GUID格式
  const guidId = formatAsGuid(id)
  if (!guidId) {
    const errorMsg = `无法将ID转换为有效的GUID格式: ${id}`
    console.error('❌ updateProfile错误:', errorMsg)
    return Promise.reject(new Error(errorMsg))
  }
  
  const url = `/Personal/${guidId}/profile`
  console.log('💾 更新URL:', url, 'GUID ID:', guidId)
  
  return http.put(url, dto)
    .then(response => {
      console.log('✅ updateProfile成功响应:', response)
      return response
    })
    .catch(error => {
      console.error('❌ updateProfile失败:', {
        url,
        originalId: id,
        guidId: guidId,
        dto,
        error: error.message,
        status: error.response?.status,
        statusText: error.response?.statusText,
        responseData: error.response?.data
      })
      throw error
    })
}
  
export const changePassword = (id, { oldPassword, newPassword }) => {
  console.log('🔐 changePassword调用，原始ID:', id)
  
  if (!id || id === 'undefined' || id === 'null') {
    const errorMsg = `用户ID无效: ${id}`
    console.error('❌ changePassword错误:', errorMsg)
    return Promise.reject(new Error(errorMsg))
  }
  
  // 转换为GUID格式
  const guidId = formatAsGuid(id)
  if (!guidId) {
    const errorMsg = `无法将ID转换为有效的GUID格式: ${id}`
    console.error('❌ changePassword错误:', errorMsg)
    return Promise.reject(new Error(errorMsg))
  }
  
  const url = `/Personal/${guidId}/password`
  console.log('🔐 修改密码URL:', url, 'GUID ID:', guidId)
  
  return http.put(url, { 
    oldPassword,  // 对应后端 OldPassword
    newPassword   // 对应后端 NewPassword
  })
    .then(response => {
      console.log('✅ changePassword成功响应:', response)
      return response
    })
    .catch(error => {
      console.error('❌ changePassword失败:', {
        url,
        originalId: id,
        guidId: guidId,
        error: error.message,
        status: error.response?.status,
        statusText: error.response?.statusText,
        responseData: error.response?.data
      })
      throw error
    })
}
  
// 头像上传现在通过base64直接保存，不需要单独的上传接口
export const uploadAvatar = (formData) => {
  console.log('uploadAvatar调用 - 使用base64存储方案')
  // 直接返回成功，实际的头像保存通过updateProfile完成
  return Promise.resolve({ success: true, message: '头像保存成功' })
}